/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package familytree.persistencia.dao;

import familytree.persistencia.pojos.Album;
import familytree.persistencia.pojos.Arbol;
import familytree.persistencia.pojos.Nodo;
import familytree.persistencia.pojos.Pareja;
import familytree.persistencia.pojos.Usuario;
import java.util.List;

/**
 *
 * @author Antonio
 */
public interface ArbolDAO extends GenericDAO<Arbol,String> {

    public List<Nodo> findNodosByCompleteName(String nombre, String idArbol);

    /**
     Inicia una familia almacenando el usuario y asignandole la familia y los primeros familiares
     * @param arbol Familia a la que pertenece el usuario
     * @param nodoHijo Nodo del árbol que corresponde al usuario
     * @param nodoMadre Nodo del árbol que corresponde a la madre del usuario
     * @param nodoPadre Nodo del padre que corresponde al padre del usuario
     * @param usuario El Nuevo usuario
     * @return El nuevo usuario
     */
    public Usuario iniciarFamila(Arbol arbol, Nodo nodoHijo, Nodo nodoPadre, Nodo nodoMadre, Usuario usuario, Album album);
    
    public void addComponentes(List<Nodo> lista);
    public void anadirMadre(Pareja p,Nodo madre,Nodo hijo);
    public void anadirPadre(Pareja p,Nodo padre,Nodo hijo);
    public void anadirPareja(Nodo nodo,Nodo conyuje);
    public Nodo anadirHijo(Nodo nodoActual,String idPareja ,Nodo nodoHijo);
    public List<Nodo> findNodosByIdArbol(String idArbol);
}
